'''
::
    
    ################### ID号 ###################
    CFL_ID0 = 0x01
    CFL_ID1 = 0x02
    CFL_ID2 = 0x04
    CFL_ID3 = 0x08
    CFL_ID4 = 0x10
    CFL_ID5 = 0x20
    CFL_ID6 = 0x40
    CFL_ID7 = 0x80
    CFL_ID8  = 0x0100
    CFL_ID9  = 0x0200
    CFL_ID10 = 0x0400
    CFL_ID11 = 0x0800
    CFL_ID12 = 0x1000
    CFL_ID13 = 0x2000
    CFL_ID14 = 0x4000
    CFL_ID15 = 0x8000
    
    Replace_CA310 = 1
    Replace_CA410 = 0
    
'''

class Lens_comDriver(object):
    '''    
    CA310探头消息类对象
    '''

class TdeltauvLvTypeDef(object):
    '''    
    Tdelta, duv, Lv类对象
    '''

    def T(self):
        '''    
        Tdelta 对象
        '''

    def duv(self):
        '''    
        duv 对象
        '''

    def Lv(self):
        '''    
        Lv 对象
        '''

class u_v_LvTypeDef(object):
    '''    
    u,v,Lv 数据类对象
    '''

    def U_(self):
        '''    
        u 对象
        '''

    def v_(self):
        '''    
        V 对象
        '''

    def Lv(self):
        '''    
        Lv 对象
        '''

class XYZTypeDef(object):
    '''    
    X,Y,Z 数据类对象
    '''

    def X(self):
        '''    
        X 数据对象
        '''

    def Y(self):
        '''    
        Y 数据对象
        '''

    def Z(self):
        '''    
        Z 数据对象
        '''

class XYLvTypeDef(object):
    '''    
    X,Y,LV 数据类对象
    '''

    def X(self):
        '''    
        X 数据对象
        '''

    def Y(self):
        '''    
        Y 数据对象
        '''

    def LV(self):
        '''    
        LV 数据对象
        '''

def CFL_Init():
    '''√
    初始电源板驱动程序

    *参数  : 无

    *返回  
        * =0 初始化成功
        * <0 失败      

    * raise  :   无
    '''

def CFL_GetCalXYLv(PN,color):
    '''
    回读颜色校准值   

    * 参数
        * PN  : 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
        * color : 0 红 ，1 绿， 2 蓝

    * 示例： ret,xyLv = CFL_GetCalXYLv(CFL_ID0|CFL_ID15,0)
            print(xyLv[15].X)
            print(xyLv[15].Y)
            print(xyLv[15].LV)

    *返回  
        * =0 成功
        * <0 失败     

    * raise  :   无
    '''

def CFL_SetCalXYLv(PN,color,xyLv):
    '''
    设置颜色校准值

    * 参数
        * PN: 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
        * color : 0 红 ，1 绿， 2 蓝
        * xyLv  ： 要设置的值 具体请看结构体定义

    * 返回  
        * =0 成功
        * <0 失败  

    * raise  :   无
    '''

def CFL_GetMeasureXYLv(PN):
    '''√
    回读测量颜色XYLv

    * 参数 
        * PN： 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 

    * 示例： ret,xyLv = CFL_GetMeasureXYLv(CFL_ID15)
            print(xyLv[15].X)
            print(xyLv[15].Y)
            print(xyLv[15].LV)

    * 返回  
        * res=0 成功
        * res<0 失败
        * xyLv 回读测量颜色XYLv

    * raise  :   无
    '''

def CFL_GetMeasureDB(PN):
    '''√
    回读测量的db值

    * 参数 
        * PN 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 

    * 示例  :
            ret,Read_DB = CFL_GetMeasureDB(CFL_ID0|CFL_ID15)
            print(Read_DB[0])
            print(Read_DB[15])    

    * 返回  
        * ret=0 成功
        * ret<0 失败
        * Read_DB: 返回的测量值,暂时只返回16通道的DB值。（如需要增加通道值 需要改底层）

    * raise  :   无
    '''

def CFL_GetMeasureDBGroup(PN):
    '''
    回读测量的db组  6HZ~65hZ

    * 参数 
        * PN 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 

    * 返回  
        * =0 成功
        * <0 失败   

    * raise  :   无
    '''

def CFL_GetVersionNum(PN):
    '''√
    回读软件版本号

    * 参数  
        * PN:探头id，见最上方宏定义

    * 示例  : ret,Version = CFL_GetVersionNum(CFL_ID0)
    #       print(Version[0].b1)

    * 返回  
        * =0 成功
        * <0 失败

    * raise  :   无
    '''

def CFL_GetMeasureFLICK(PN):
    '''√
    回读测量的flick

    * 参数  
        * PN 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 

    * 示例： ret,flick = CFL_GetMeasureFLICK(CFL_ID15)
        print(flick[15])

    * 返回  
        * ret=0 成功
        * ret <0 失败  
        * lick 回读测量的flick

    * raise  :   无
    '''

def CFL_GetMeasureTdeltauvLv(PN):
    '''√
    回读测量TdeltauvLv

    * 参数  
        * PN :  表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
        * TdeltauvLv : 返回的测量值

    * 返回  
        * =0 成功
        * <0 失败   

    * raise  :   无
    '''

def CFL_GetMeasureu_v_Lv(PN):
    '''√
    回读测量u_v_Lv

    *参数  
        * PN:  表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
        * u_v_Lv : 返回的测量值

    *返回  
        * =0 成功
        * <0 失败   

    * raise  :   无
    '''

def CFL_SetLED_SW(PN,ledFlag):
    '''√
    设置显示屏开关

    *参数  
        * PN : 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
        * ledFlag : 1打开0关闭  长度为16的字节数组

    *示例： ledFlag = bytearray(16)
            ledFlag[15] = 1
            CFL_SetLED_SW(CFL_ID15,ledFlag)

    *返回  
        * =0 成功
        * <0 失败  

    * raise  :   无
    '''

def CFL_SetShutter_SW(PN,ShutterFlag):
    '''√
    设置快门开关

    * 参数  
        * PN: 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
        * ShutterFlag : 1打开0关闭  长度为16的字节数组

    * 示例： ShutterFlag = bytearray(16)
            ShutterFlag[15] = 1
            CFL_SetShutter_SW(CFL_ID15,ShutterFlag)

    * 返回  
        * =0 成功
        * <0 失败 

    * raise  :   无
    '''

def readMatrix_Cal(PN):
    '''
    回读校准矩阵

    * 参数  
        * PN : 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 

    * 返回  
        * ret=0 成功
        * ret<0 失败  
        * Matrix_Cal:只返回长度为16的列表

    * raise  :   无
    '''

def readMatrix_Inv_Cal(PN):
    '''
    回读校准矩阵

    * 参数  
        * PN : 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 
    
    * 返回  
        * ret=0 成功
        * ret<0 失败  
        * Matrix_Inv_Cal:只返回长度为16的列表

    * raise  :   无
    '''

def CFL_GetMeasureXYZ(PN):
    '''√
    回读测量颜色XYZ
    
    * 参数  
        * PN : 表示使用哪些id的探头 第0位表示ID0  第七位表示ID7 

    * 返回  
        * ret=0 成功
        * ret<0 失败  
        * XYZ  ： 读取的值 具体请看结构体定义

    * raise  :   无
    '''

def CFL_Set_CH(PN,CH):
    '''√
    切换通道

    * 参数  
        * PN:探头id，见最上方宏定义，ch范围0-99

    示例： CFL_Set_CH(CFL_ID0,1)
        CFL_Set_CH(CFL_ID15,15)

    * 返回  
        * =0 成功
        * <0 失败 

    * raise  :   无
    '''

def CFL_Read_Sole_ID(PN):
    '''√
    读唯一ID
    
    * 参数  
        * PN:探头id，见最上方宏定义
    * 示例  : ret,Sole_ID = CFL_Read_Sole_ID(CFL_ID0|CFL_ID15)
            print(Sole_ID[0])
            print(Sole_ID[15])

    * 返回  
        * ret =0 成功
        * ret<0 失败  
        * Sole_ID:唯一ID

    * raise  :   无
    '''

def CFL_read_CAL_Time(PN):
    '''√
    读校准的日期

    * 参数  
        * PN:探头id，见最上方宏定义

    * 示例  : ret,CAL_Time = CFL_read_CAL_Time(CFL_ID0|CFL_ID15)
            print(CAL_Time[0])
            print(CAL_Time[15])

    * 返回  
        * <0 失败 ,其他CAL_Time

    * raise  :   无
    '''

def CFL_SET_CAL_Time(PN,CAL_Time):
    '''√
    设置校准的日期

    * 参数 
        * PN:探头id，见最上方宏定义  CAL_Time长度为16的列表

    * 示例  ：   cal_list = [0]*16
                cal_list[15] = 20220307
                CFL_SET_CAL_Time(CFL_ID15,cal_list)

    *返回  
        * =0 成功
        * <0 失败 

    * raise  :   无
    '''


# '''
# *函数名: CFL_SET_SYNC_HZ
# *描述  : 无
# *参数  : 
#     1. 
# *返回  : =0 成功，<0 失败
# '''

def CFL_Zero_cal(PN,data):
    '''√
    校准零偏（清零操作）//等待时间较长，大概35秒

    * 参数  
        * PN:探头id，见最上方宏定义  data 长度为16的字节数组

    * 示例：  data = bytearray(16)
            data[15] = 1
            CFL_Zero_cal(CFL_ID15,data) 

    * 返回  
        * =0 成功
        * <0 失败

    * raise  :   无
    '''

def COMCa310InterfaceInit(sky_comDriver,id = 0):
    '''
    绑定驱动至探头消息结构体

    * 参数 : 
        * sky_comDriver : 驱动结构体
        * id : 探头id
    *            
    * 返回 
        * CA310探头消息结构对象

    * 注意事项 : 镜头一拖多时需要传指定的ID ID从1开始 默认从0开始

    * 示例     ：
                一拖一写法 ：
                comDriver = uart_init(port = 7,baudrate = 38400, bits=7, parity=2, stop=2,read_buf_len = 4096)         
                COMCa410 = COMCa310InterfaceInit(comDriver)
                一拖多写法：
                BusRS232_Driver1 = Multi_BusRS232_init(id = 1)
                COMCa410_1 = COMCa310InterfaceInit(BusRS232_Driver1,id = 1)
    * raise  :   无            
    '''

def COMCA310_Init(Lens_comDriver,ch,sync):
    '''
    初始化CA-310探头

    * 参数 
        * Lens_comDriver : CA310探头消息结构对象
        * ch : 内存通道,值域0 ~ 99,默认-1
        * sync : 同步模式 -1：默认  0：NTSC  1：PAL  2：EXT  3：UNIV

    * 返回
        * = 1 : 初始化成功
        * < 0 : 初始化失败

    * 注意事项 : 该初始化不校零      

    * raise  :   无         
    '''

def COMCA310_QueryPNumber(Lens_comDriver):
    '''
    查询CA310探头编号

    * 参数 
        * ca310 : CA310探头消息结构

    * 返回 
        * 探头编号

    * 注意事项 : 仅适用CA-310多探头测量       

    * raise  :   无 
    '''

def COMCA310_Cal0(Lens_comDriver):
    '''
    校零CA-310探头

    * 参数 
        * ca310 : CA310探头消息结构

    * 返回 
        * = 1 : 校零成功
        * < 0 : 校零失败    

    * raise  :   无 
    '''

def COMCA310_GetLvXY(Lens_comDriver,PN,xyLv):
    '''
    查询色坐标及亮度值(只能读一个)

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推
        * xyLv  : 读取的值 具体请看结构体定义

    * 返回: 
        * = 1 : 查询成功
        * < 0 : 查询失败  

    * raise  :   无 
    '''

def COMCA310_Get_Multi_LvXY(Lens_comDriver,PN):
    '''
    查询多个色坐标及亮度值(最多可同时读五个)

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回 
        * ret = 0 成功
        * ret < 0 失败  
        * xyLv 回读测量的LvXY(列表形式返回)   

    * raise  :   无  
    '''

def COMCA310_GetXYZ(Lens_comDriver,PN,xyz):
    '''
    查询单个X,Y,Z

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推
        * XYZ  : 读取的值 具体请看结构体定义

    * 返回
        * = 1 : 查询成功  
        * < 0 : 查询失败     

    * raise  :   无  
    '''

def COMCA310_Get_Multi_XYZ(Lens_comDriver,PN):
    '''
    查询三刺激值

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回 
        * ret = 0 成功
        * ret < 0 失败 
        * XYZ 回读测量的XYZ 

    * raise  :   无  
    '''

def COMCA310_GetTcpduvLv(Lens_comDriver,PN):
    '''
    查询Tcp, duv, Lv

    * 参数
        * ca310 : Ca310Interface类型结构体
        * PN :  传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回
        * = 1 : 查询成功  
        * < 0 : 查询失败     

    * raise  :   无  
    '''

def COMCA310_GetuvLv(Lens_comDriver,PN):
    '''
    查询u, v, Lv

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN :  传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回
        * = 1 : 查询成功  
        * < 0 : 查询失败  

    * raise  :   无      
    '''

def COMCA310_GetFMA(Lens_comDriver,PN):
    '''                                                              
    查询闪烁值

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回 
        * ret = 1 : 查询成功  
        * ret < 0 : 查询失败 
        * FMA : flick值  

    * raise  :   无      
    '''

def COMCA310_GetMeasureCH(Lens_comDriver,PN):
    '''
    查询测量通道号

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回
        * ret = 1 : 查询成功  
        * ret < 0 : 查询失败 
        * CH : CA310探头通道号缓存区查询通道值域为0 ~ 99,对应通道CH00 ~ CH99
    * raise  :   无                      
    '''

def COMCA310_GetMeasureCH(Lens_comDriver,PN,CH):
    '''
    设置测量通道号

    * 参数 
        * ca310 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推
        * CH : CA310探头通道号,值域为0 ~ 99,代表通道CH00 ~ CH99

    * 返回
        * = 1 -- 设置成功  
        * < 0 -- 设置失败

    * raise  :   无   

    '''

def COMCA310_GetSerialNO(Lens_comDriver,PN):
    '''
    查询CA310探头唯一序列号

    * 参数 
        * ca310 : CA310探头消息结构
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推

    * 返回: 
        * ret = 1 : 查询成功  
        * ret < 0 : 查询失败 
        * id : CA310探头通道号缓存区

    * 注意事项 : 不能多个探头同时读

    * raise  :   无   
    '''

def COMCA310_SetINTFrequency(Lens_comDriver,PN,fre):
    '''
    设置INT模式下的同步频率

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推 
        * fre : 同步频率,最多支持小数点后两位

    * 返回
        * = 1 : 设置成功  
        * < 0 : 设置失败

    * raise  :   无   
    '''

def COMCA310_SetMeasureSpeed(Lens_comDriver,PN,speedmode):
    '''
    设置测量速度

    * 参数 
        * ca410 : Ca310Interface类型结构体 
        *PN : 传入上面的ID宏,读多个时或上ID号(不可传0)。CFL_ID0--P1 1号镜头 CFL_ID1--P2 2号镜头 以此类推 
        * speedmode : CA410测量速度模式 0.SLOW 1.FAST 2.LTD.AUTO 3.AUTO
    
    * 返回
        * = 1 : 设置成功  
        * < 0 : 设置失败

    * raise  :   无 
    '''

def COMCA410_Init(Lens_comDriver,ch,sync):
    '''
    初始化CA-410探头

    * 参数 
        * ca410 : CA410探头消息结构
        * ch : 内存通道,值域0 ~ 99,默认-1
        * sync : 同步模式 -1：默认  0：NTSC  1：PAL  2：EXT  
    
    * 返回
        * = 1 : 成功  
        * = -1 : 失败

    * 注意事项 : 该初始化附带校零    

    * raise  :   无       
    '''

def COMCA410_Cal0(Lens_comDriver):
    '''
    校零CA410探头

    * 参数 
        * ca410 : CA410探头消息结构

    * 返回 
        * = 1 : 成功  
        * < 0 : 失败

    * raise  :   无       
    '''

def COMCA410_GetLvXY(Lens_comDriver,PN,xyLv):
    '''
    查询色坐标及亮度值

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 输出参数 
        * Lv -- 亮度值,单位cd/m^2
        * X -- XY色度图中X坐标  
        * Y -- XY色度图中Y坐标

    * 返回
        * = 1 : 查询成功  
        * = -1 : 查询失败   

    * raise  :   无       
    '''

def COMCA410_GetLvXY_(Lens_comDriver,PN):
    '''
    查询色坐标及亮度值

    * 函数差异: 返回参数的方式不同

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 返回
        * ret = 1 : 查询成功  
        * ret = -1 : 查询失败   
        * XYLv 色坐标及亮度值 类对象

    * raise  :   无       
    '''

def COMCA410_GetXYZ(Lens_comDriver,PN,xyz):
    '''
    查询三刺激值

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 输出参数 
        * X : 三刺激值之X
        * Y : 三刺激值之Y 
        * Z : 三刺激值之Z

    * 返回 
        * = 1 : 查询成功  
        * = -1 : 查询失败   

    * raise  :   无   
    '''

def COMCA410_GetXYZ_(Lens_comDriver,PN):
    '''
    查询三刺激值

    * 函数差异: 返回参数的方式不同

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 返回: 
        * ret = 1 : 查询成功  
        * ret = -1 : 查询失败   
        * XYZ 三刺激值 类对象
    
    * raise  :   无   
    '''

def COMCA410_GetTcpduvLv(Lens_comDriver,PN):
    '''
    查询色温
    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : 保留参数,值无效

    * 输出参数 
        * Tcp : 色温
        * duV : 色偏差值
        * Lv : 亮度值,单位cd/m^2

    * 返回 
        * ret = 1 : 查询成功  
        * ret < 0 : 查询失败 
        * TdeltauvLv  色温类对象
    
    * raise  :   无   
    '''

def COMCA410_GetuvLv(Lens_comDriver,PN):
    '''
    查询CIE1946Lvuv色空间值

    * 参数 
        * ca410 -- Ca310Interface类型结构体
        * PN -- 保留参数,值无效

    * 返回
        * ret = 1 : 查询成功  
        * ret < 0 : 查询失败
        * u_v_Lv : 色空间值 类对象
    
    * raise  :   无   
    '''

def COMCA410_GetFMA(Lens_comDriver,PN):
    '''
    查询闪烁值

    * 参数
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 返回 
        * ret = 1 : 查询成功  
        * ret = -1 : 查询失败
        * FMA : 闪烁值
    
    * raise  :   无   
    '''

def COMCA410_GetdB(Lens_comDriver,PN):
    '''
    查询flick dB值

    * 参数 
        * ca410 -- Ca310Interface类型结构体
        * PN -- 保留参数,值无效

    * 输出参数 : 
        * FMA : flick值

    * 返回
        * ret = 1 : 查询成功  
        * ret < 0 : 查询失败
        * DB : flick dB值

    * raise  :   无   
    '''

def COMCA410_SetINTFrequency(Lens_comDriver,PN,fre):
    '''
    设置INT模式下的同步频率

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8
        * fre : 同步频率,最多支持小数点后两位

    * 返回
        * = 1 : 设置成功 
        * = -1 : 设置失败

    * raise  :   无   
    '''

def COMCA410_GetINTFrequency(Lens_comDriver,PN):
    '''
    查询INT模式下的同步频率

    * 参数
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 返回 
        * ret = 1 : 查询成功  
        * ret = -1 : 查询失败
        * fre : 同步频率

    * raise  :   无   
    '''

def COMCA410_GetMeasureCH(Lens_comDriver,PN):
    '''
    查询测量通道号

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8

    * 返回
        * ret = 1 : 查询成功  
        * ret = -1 : 查询失败
        * Read_CH : 测量通道号
    '''

def COMCA410_SetMeasureCH(Lens_comDriver,PN,CH):
    '''
    设置测量通道号

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : CA410主机一拖多探头编号,位域[4:0],可选值有0,1,2,4,8
        * CH : CA410探头通道号,值域为0 ~ 99,代表通道CH00 ~ CH99

    * 返回 
        * = 1 : 设置成功 
        * = -1 : 设置失败
    '''

def COMCA410_SetMeasureSpeed(Lens_comDriver,PN,speedmode):
    '''
    设置测量速度

    * 参数 
        * ca410 : Ca310Interface类型结构体
        * PN : 保留参数,值无效
        * speedmode : CA410测量速度模式 0.SLOW 1.FAST 2.LTD.AUTO 3.AUTO

    * 返回 
        * = 1 : 设置成功  
        * < 0 : 设置失败
    '''

